#ifndef PARTICLEMANAGER_H
#define PARTICLEMANAGER_H

#include "Vector3.h"
#include <vector>
#include <map>
#include "Particle.h"
#include "ParticleSystem.h"

class ParticleManager
{
	std::map<std::string, ParticleSystemData> baseParticleSystems;
    
	std::vector<ParticleSystem*> particleSystems;
    
	~ParticleManager();
    
public:
	static ParticleManager& instance()
	{
		static ParticleManager i;
		return i;
	}
    
	std::map<std::string, ParticleSystemData> getBaseParticleSystems() const { return baseParticleSystems; }
	void initialize();
	void loadContent();
	void loadXML();
	void resetParticleSystems();
	void update();
	void render();
	ParticleSystem* addParticles(const char* name, const Vector3 &position, const Vector3 &direction = Vector3(0,0,0));
};

#endif
